package org.huntaway.hibernate;

import java.sql.Connection;
import java.sql.ResultSet;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;

/**
 * @author jskyme
 * 
 */
public interface SessionManager {

	/**
	 * @return
	 */
	public Session getSession();

	/**
	 * @return
	 */
	public Connection getConnection();

	/**
	 * @return
	 */
	public Session getNewSession();

	/**
	 * @param clazz
	 * @return
	 */
	public Criteria createCriteria(Class clazz);

	/**
	 * @param obj
	 */
	public void save(Object obj);

	/**
	 * @param clas
	 * @param priId
	 * @return
	 */
	public Object load(Class clas, Integer priId);

	/**
	 * @param clas
	 * @param priId
	 * @return
	 */
	public Object get(Class clas, Integer priId);

	/**
	 * @param hql
	 * @return
	 */
	public Query queryHql(String hql);

	/**
	 * @param hql
	 */
	public void updateHql(String hql);

	/**
	 * @param hql
	 * @return
	 */
	public Query findbyhql(String hql);

	/**
	 * @param sql
	 * @return
	 */
	public SQLQuery querySql(String sql);

	/**
	 * @param sql
	 * @return
	 */
	public Query queryByName(String sql);

	/**
	 * @param obj
	 */
	public void update(Object obj);

	/**
	 * @param clas
	 * @param inte
	 */
	public void delete(Class clas, Integer inte);

	/**
	 * @param obj
	 */
	public void delete(Object obj);

	/**
	 * @param sql
	 * @return
	 */
	public ResultSet queryBySql(String sql);

	/**
	 * @param sql
	 */
	public void updateBySql(String sql);
}
